package com.ace.token.common.bean;

import com.ace.token.common.constant.Group;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 公共请求实体对象
 * @Author
 * @Date 2018年07月02日 下午5:28
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
public class RequestDTO<T extends Serializable> implements Serializable {

    private static final long serialVersionUID = 5881385554996524728L;
    /**
     * 版本号
     */
    @NotNull(message = "{requestDTO.version}",groups = {Group.Default.class})
    private String version;
    /**
     * 类型根据type的类型来确定访问者的类型
     */
    @NotNull(message = "{requestDTO.type}",groups = {Group.Default.class})
    private String type;

    /**
     * 操作人id
     */
    @NotNull(message = "{requestDTO.uid}",groups = {Group.Default.class})
    private String uid;

    /**
     * 接口数据
     */
    @Valid
    @NotNull(message = "{requestDTO.data}",groups = {Group.Default.class})
    private T data;
}
